/* ***************form效果工具function*******************/
//初始化form布局，对顶级功能页使用
function _initFormLayout(data,clear){
		if(arguments.length==1){
			clear=true;
		}
		$("#insertArea").hide();
		$("#noticeItem").hide();
		if(clear){
			$("#formContainer").empty();
		};
		clear=null;
		$("#formContainer").append(data);
//		if($('#formZone'+ind)&&$('#formContent'+ind)){
//			$('#formZone'+ind).corner();
//  			$('#formContent'+ind).corner();
//		}
		$("#formContainer").show();
		$("#insertArea").show();
//		$("#insertArea").fadeIn(900);
		data=null;
}

/* ***************Ajax Form处理通用function*******************/
var hostContext="";
var debugFormInfo=false;
var printServerResult=true;
var err_rgexp=/HTTP\S*Status\S*\d{3}/i;
var submitSuccess="提交成功";
var submitFailure="提交失败";
var submitFailureInfo="json=";
var ajaxFormParam={async:true};


//ajax 执行错误时的处理,仅适用处理程序和通讯问题，不能处理业务逻辑错误
//{request,callback} request-XMLRequest对象  callback-回调函数
function ajaxErrorHandler(options){
	if(options==null){
		options={};//
	} 
	
	if(options.callback != undefined){
		alert("数据提交错误!");
		eval(options.callback);
	}else if(debugFormInfo){
		if(options.request != undefined&&options.request.status!=null){
//			var k=parseInt(options.request.status);
//			if(k!=NaN&&(k==200||k==304)){
//				return ;
//			}
			$("#errorReason").html(options.request.status);
		}else{
			$("#errorReason").html("未知");
		}
		if(options.request != undefined&&options.request.responseText!=null){
			var data=options.request.responseText;
			data=data.replace(/Apache Tomcat\S+\d{0,2}\.\d{0,2}\.\d{0,2}/g," IBM Websphere V5.1 ");
			$("#returnContext").html(data);
			data=null;
		}
//		$("#formErrorZone").corner();
		$("#formErrorButton").bind("click",{tgdiv:"#formErrorZone"},hideContentDiv);
		showContentDiv($("#formErrorZone"));
	}
	options=null;
}

//是否session失效
function _testSession(data){
	var x=data.indexOf("<html>");
	if(x!=-1&&x<20){
		alert("用户会话失效,请重新登录");
		window.document.location.href="login.html";
		return true;
	}
//	if(data.indexOf(submitFailure+submitFailureInfo)==0){
//		var json=false;
//		var info=data.replace(submitFailure+submitFailureInfo,"");
//		json=eval("("+info+")");
//		if(json&&json.reason.indexOf("sessionInvalidation")==0){
//			window.document.location.href="login.html";
//			return true;
//		}
//	}
	data=null;
	return false;
}

//mypost点击menu中的链接是打开相应页面的功能页
(function($){
	jQuery.mypost = function(url,postData,callback,params){
		if ( jQuery.isFunction( postData ) ) {
				callback = postData;
				postData = {};
		}
		url=hostContext+url;
		callback=callback||function(){};
		params=params||{};
		postData=postData||{};
		var defaultParams={
				type: "GET",
				dataType: "html",
				url: url,
				data: postData,
				success: function(data){
//					if(_testSession(data)){
//						var win=window
//						win.document.location.href="login.html";
//						win=null;
//					}else{
//						callback.call(null,data);
//					}
					if(!_testSession(data)){
						callback.call(null,data);
					}
					data=null;
				},
				error: function(request,code,ex){
					ajaxErrorHandler({request:request});
				}
		};
		var defaultOption=$.extend({},$.ajaxSettings,defaultParams);
		params=$.extend(defaultOption,params);
		return jQuery.ajax(params);
	};
})(jQuery);

//多用于功能页中表单的提交的处理，需绑定form(jquery)对象
//返回的form提交结果之后处理方法分成
//1.程序控制->传递 successFunc
//2.默认处理->设定 subDataType
(function($){
	var  _getOption=function(){
		//args = (subDataType|successFunc|params)  //(string|function|object)
		var _subDataType=false;
		var _successFunc=false;
		var _params=false;   //如果params中定义success,则默认的处理方式作废
		switch(arguments.length){
			case 1:
				if(typeof(arguments[0])=="string"){
					_subDataType=arguments[0];
				}else if(jQuery.isFunction(arguments[0])){
					_successFunc=arguments[0];
				}else if(typeof(arguments[0])=="object"){
					_params=arguments[0];
				}
				break;
			case 2:	
				if(typeof(arguments[0])=="string"){
					_subDataType=arguments[0];
					if(jQuery.isFunction(arguments[1])){
						_successFunc=arguments[1];
					}else{
						_params=arguments[1];
					}
				}else{
					if(jQuery.isFunction(arguments[0])){
						_successFunc=arguments[0];
						_params=arguments[1];
					}else{
						_params=arguments[0];
						_successFunc=arguments[1];
					}
				}		
				break;
			case 3:
				_subDataType=arguments[0];
				_successFunc=arguments[1];
				_params=arguments[2];
				break;
		}
		
		var _success=function(data){
				//subDataType!=null
				if(data){
//					data=jQuery.trim(data);
					if(!_subDataType||_subDataType=="exec"){
						if(_successFunc)
								_successFunc(data);			//subDataType=="exec"||null  _successFunc参数是plain对象
					}else if(_subDataType&&_subDataType!="exec"){
						 if(_subDataType=="none"){		//subDataType=="none"时 不执行任何操作
						}else if(_subDataType=="script"){								
							jQuery.globalEval( data );				
							if(_successFunc)
								_successFunc(data);			//subDataType=="script"时 _successFunc参数是plain对象
						}else if(_subDataType=="html"){
							var ele=jQuery("<div>").html(data).evalScripts();
							if(_successFunc)
								_successFunc(data);			//subDataType=="html"时 _successFunc参数是plain对象
//								_successFunc(ele);
							ele=null;
						}else if(_subDataType=="json"){
							var ele=eval("(" + data + ")");		
							if(_successFunc)
								_successFunc(ele); 			//subDataType=="json"时 _successFunc参数是json对象
							ele=null;
						}else if(_subDataType=="print"){
//							var s=jQuery.trim(data);			
							var s=data;
							if(s.length>0){
								if(s.length>300)
									s=s.substring(0,300)+"......";
//								alert("服务器返回信息:\n"+s);		
								alert(s);
								s=null;
							}
							s=null;
							if(_successFunc)
								_successFunc(data);         //subDataType=="print"时,打印返回信息,_successFunc参数是plain对象
						}
					}
			    }
//				else{
//					if(_successFunc)
//							_successFunc();	
//				}
				data=null;
		};
		
		var defaultParams={
			type:"POST",
			dataType:"plain", 		  //jquery将返回无格式的文本
			beforeSubmit: function(){return true;}, //包含验证form用的函数
			success:function(data){
				_success(data);
			},
			error:function(request,code,ex){
						ajaxErrorHandler({request:request});
						request=null;
			}
		};
		var option=$.extend({},$.ajaxSettings,defaultParams);
		if(_params)
			option=$.extend(option,_params);
		return option;
	};
	
	jQuery.fn.myAjaxForm = function(){
		var option=_getOption.apply(this,arguments);
		return this.each(function(){
			$(this).ajaxForm(option);
			option=null;
		});
	};
	
	jQuery.fn.myAjaxSubmit =  function(){
		var option=_getOption.apply(this,arguments);
		return this.each(function(){
			$(this).ajaxSubmit(option);
			option=null;
		});
//		this.ajaxSubmit(option);
//		$(this).ajaxSubmit(option);
	};
	
})(jQuery);


function _clearContentZone(t){
	$("#formContainer").empty();
//	if(!t)
//		t=2000;
//	$("#insertArea").Shrink(1,function(){
//		$("#formContainer").empty();
//	});
}

//如果params是提交的数据,则需用{data:params}封装
function _validateSubmit(formName,clickEle,successFunc,params){
		if(successFunc&&typeof(successFunc)=="object"){
			params=successFunc;
			successFunc=false;
		}
		if(!params)
			params={};
		var callback=successFunc;
		if(!callback||typeof(callback)!="function")
			 callback=function(){
				if(arguments[0]){
//					printObject("校验正确,表单提交");
					$("#"+formName).myAjaxForm(
						params,
						function(data){
							if(_judgeServerResult(data)){
								_clearContentZone();
							}
							data=null;
					}).submit();
				}
			};

		Validator.Setup({
			Name : formName,
			ClickElement : clickEle,
			DataSourceType : Validator.Enumerate.DataSourceType.Attribute,
			ValidateType :Validator.Enumerate.ValidateType.Click ,
			AlertType : Validator.Enumerate.AlertType.Color | Validator.Enumerate.AlertType.SummarySingle ,
			ShowTipsType: 2,
			ValidateCallBack:callback
		});
		callback=null;
}

function _nonValidateSubmit(formName,successFunc,params){
	if(successFunc&&typeof(successFunc)=="object"){
		params=successFunc;
		successFunc=false;
	}
	if(!params)
		params={};
	var sf=successFunc;
	if(!sf||typeof(sf)!="function"){
		sf=function(data){
			if(_judgeServerResult(data)){
				_clearContentZone();
			}
			data=null;
		};
	}
	$("#"+formName).myAjaxForm(params,sf);
	sf=null;
}

function _judgeServerResult(data){
//	if(data) data=$.trim(data);
	if(_testSession(data)){
			return false;
	}
	if(arguments.length==0||!data||data.length==0){
		alert("错误代码"+666+":服务器返回的AJAX提交结果为NULL?");
		return false;
	}
	if(data.indexOf(submitSuccess)==0){
		if(printServerResult)
			alert(submitSuccess);
		return true;
	}else if(data.indexOf(submitFailure)==0){
		var out=submitFailure+",错误原因:\r\n";
		var json=false;
		var info=data.replace(submitFailure,"");
		if(info.indexOf(submitFailureInfo)==0){
			info=info.replace(submitFailureInfo,"");
			json=eval("("+info+")");
			if(json.reason&&json.reason.length>100){
				json.reason=json.reason.substr(0,100).concat(" ...... ");
			}
			out=out.concat(json.reason);
		}

		if(printServerResult);
			alert(out);
		if(json&&json.reason.indexOf("sessionInvalidation")==0){
			window.location.href="login.html";
		}
		info=null;
		json=null;
		out=null;
		return false;
	}else{
		alert("错误代码"+666+":服务器返回的AJAX提交结果无法解析");
		return false;
	}
	data=null;
}